while(!(t<=n&&t*2>=n))什么意思

来源:百度知道 编辑:UC知道 时间:2024/05/26 20:37:43
/*该程序功能:输入整数n(n>0),求m使得2的m次方小于或等于n,2的m+1次方大于或等于n。*/
#include <stdio.h>
void main()
{ int m=0,t=1,n;
while( __scanf(“%d”,&n), n<=0___);
while(!(t<=n&&t*2>=n)){
___t=t*2;___
m++;
}
printf("%d\n",m);
}

帮忙翻译下
while( __scanf(“%d”,&n), n<=0___);
while(!(t<=n&&t*2>=n)){
___t=t*2;___
m++;

while(scanf("%d",&n), n<=0);就是说当你输入一个数字n时如果n<=0时,执行while循环,不向下执行直到你输入的数字n>0,开始执行下面的语句。

while(!(t<=n&&t*2>=n)){
t=t*2;
m++;
}
当t<=n与t*2>=n有一个为假时,!(t<=n&&t*2>=n)为真,while循环就执行下去,直到t<=n与t*2>=n同时为真while循环结束。用m记录2的开方的次数,t用来记录2的m次方的大小。

while(!(t<=n&&t*2>=n)) 单单解释这一句话就是 : 除了 (t 要小于 N 并且 t 乘以 2后 要大于或者等于N )

56